/*                          UX-Framework                               
 *                                                                 
 *  iZE Co.,Ltd. Copyright 2009 All rights reserved.          
 *  This file is distributed under the terms of the GNU Lesser 
 *  General Public License, described in file LICENSE.                                     
 */

package jp.ize.ux.acts;

// {{{ imports
import jp.ize.ux.Util;
import jp.ize.ux.UXObject;
import jp.ize.ux.UXPoint;
import jp.ize.ux.acts.Act;
// }}}
// {{{ enum ScaleActEvent {
enum ScaleActEvent {
	/** サイズ変更が始まった事を示すイベント */
	START;
    /** サイズ変更中である事を示すイベント */
	RESIZING;
	/** サイズ変更が終了した事を示すイベント */
	STOP;
}
// }}}
// {{{ typedef ScalableType = {>
typedef ScalableType = {>
	BasicStateType,
}
// }}}
// {{{ class ScaleParameter extends ActParameter
class ScaleParameter extends ActParameter
{
	// {{{ public var factor(default, default) : Float
	/**
	 * 拡大縮小率を指定します。
	 */
	public var factor(default, default) : Float;
	// }}}
}
// }}}
// {{{ class ResizeParameter extends ActParameter
class ResizeParameter extends ActParameter
{
	// {{{ public var width(default, default) : Float
	/**
	 * サイズ変更後の幅を指定します。
	 */
	public var width(default, default) : Float;
	// }}}
	// {{{ public var hegiht(default, default) : Float
	/**
	 * サイズ変更後の高さを指定します。
	 */
	public var hegiht(default, default) : Float;
	// }}}
}
// }}}
// {{{ class FishEyeParameter extends ActParameter
class FishEyeParameter extends ActParameter
{
}
// }}}
// {{{ class ScaleAct extends ActSubject<ScaleActEvent>
/**
 * ScaleAct クラス.<br>
 * 
 * @author		iZE Co., Ltd.<br>
 * @version		$Id$<br>
 */
class ScaleAct extends ActSubject<ScaleActEvent>
{
	// {{{ public function new()
	/**
	 * コンストラクタ
	 */
	public function new()
	{
		super();
	}
	// }}}
	// {{{ public function resize( time : Float, transition : ActTransition ) : ScalableType -> Void
	/**
	 * 対象コンポーネントの左上位置を変えずに、高さと幅を変えてサイズ変更を行うアクションです。
	 */
	public function resize( resize_interp : ScalableType -> ResizeParameter ) : ScalableType -> Void
	{
		return function( state : ScalableType ) : Void {};
	}
	// }}}
	// {{{ public function scale( time : Float, transition : ActTransition ) : ScalableType -> Void 
	/**
	 * 対象コンポーネントの中心座標を変えずに、対象コンポーネントを拡大・縮小するアクションです。
	 * 
	 */
	public function scale( scale_interp : ScalableType -> ScaleParameter ) : ScalableType -> Void 
	{
		return function( state : ScalableType ) : Void {};
	}
	// }}}
	// {{{ public function fishEye( fish_interp : ScalableType -> FishEyeParameter ) : ScalableType -> Void
	/**
	 * マウスの動きに合わせて魚眼ズームするアクションです。
	 */
	public function fishEye( fish_interp : ScalableType -> FishEyeParameter ) : ScalableType -> Void
	{
		return function( state : ScalableType ) : Void {};
	}
	// }}}
}
// }}}
